License Keys In Multi Server Development Environments

It is common practice to use multiple servers in the development of web applications, for example, an application may go through a lifecycle;
developer machines ("localhost") -> single development test server ("devServer") -> QA server ("qaServer") -> production server ("prodServer")

The current licensing system requires keys for "devServer", "qaServer" and "prodServer" if they are accessed through non local browsers (note; 'devServer' and 'qaServer' keys will be provided free), this poses a problem since it is not acceptable to change the "LicenseKey" property in source code for each server.

The solution is reasonably simple and it uses a mechanism that is likely to be used already, the "web.config" file. Since each server should have a unique web.config file, storing the license keys in there makes sense.

Store the license key in the web.config in the <appSettings> section (if it doesn't exist, create it after the system.web section).

Eg;

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.web>
        ...........
    </system.web>
    <appSettings>
        <add key="Keyoti-SearchEngine-LicenseKey" value="123456789"/>
    </appSettings>
</configuration>

Now set each server's web.config accordingly, remember web.config files should not be deployed to a server with an application (because they are unique).